Methods and systems for varying channel scanning duration

ABSTRACT

A device that includes one or more processors may receive instructions to scan, at a given time, one or more channels in one or more frequency bands for presence of wireless devices in an environment of the device. The device may also identify one or more operations of the device that are occurring at the given time. The device may also adjust a duration of scanning the one or more channels based on the identified operations. The device may also cause a wireless receiver of the device to scan, for the adjusted duration, the one or more channels for the presence of the wireless devices.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. application Ser. No.15/796,781 filed Oct. 28, 2017, which is a continuation of U.S.application Ser. No. 15/222,637 filed Jul. 28, 2016, which is acontinuation of U.S. application Ser. No. 14/588,903 filed Jan. 3, 2015,the contents of each of which are entirely incorporated herein byreference as if fully set forth in this application.

BACKGROUND

Unless otherwise indicated herein, the materials described in thissection are not prior art to the claims in this application and are notadmitted to be prior art by inclusion in this section.

Wireless communication systems typically transmit and receiveinformation over multiple frequency channels. A wireless transceiver ofa device may be tuned to a particular frequency to allow the device tocommunicate over a particular channel with a particular wireless devicein the system. In another instance, the transceiver may be tuned toanother frequency to allow the device to communicate over anotherchannel with another wireless device in the system. In a typical system,the device may thus establish a connection with one or more wirelessdevices to receive access to a network or to communicate informationwith the system.

SUMMARY

In one example, a method is provided that comprises a device receivinginstructions to scan, at a given time, one or more channels in one ormore frequency bands for presence of wireless devices in an environmentof the device. The device may include one or more processors. The methodalso comprises identifying one or more operations of the device that areoccurring at the given time. The method also comprises adjusting aduration of scanning the one or more channels for the presence of thewireless devices based on the identified operations of the device. Themethod also comprises causing a wireless receiver of the device to scan,for the adjusted duration, the one or more channels for the presence ofthe wireless devices.

In another example, a device is provided that comprises a wirelessreceiver. The device also comprises one or more processors and datastorage storing instructions, that upon execution by the one or moreprocessors, cause the device to identify one or more operations of thedevice that are occurring at a given time. The instructions may furthercause the device to adjust a duration of scanning one or more channelsin one or more frequency bands for presence of wireless devices in theenvironment of the device based on the identified operations of thedevice. The instructions may further cause the device to operate thewireless receiver to scan, at the given time and for the adjustedduration, the one or more channels for the presence of the wirelessdevices.

In yet another example, a computer readable medium is provided. Thecomputer readable medium may have instructions stored therein that whenexecuted by a computing device cause the computing device to performfunctions. The functions comprise receiving a request to scan, at agiven time, one or more channels in one or more frequency bands forpresence of wireless devices in an environment of the computing device.The functions further comprise identifying one or more operations of thecomputing device that are occurring at the given time. The functionsfurther comprise adjusting a duration of scanning the one or morechannels for the presence of the wireless devices. The functions furthercomprise causing a wireless receiver of the computing device to scan,for the adjusted duration, the one or more channels for the presence ofthe wireless devices.

In still another example, a system is provided comprising a means for adevice receiving instructions to scan, at a given time, one or morechannels in one or more frequency bands for presence of wireless devicesin an environment of the device. The device may include one or moreprocessors. The system also comprises means for identifying one or moreoperations of the device that are occurring at the given time. Thesystem also comprises means for adjusting a duration of scanning the oneor more channels for the presence of the wireless devices based on theidentified operations of the device. The system also comprises means forcausing a wireless receiver of the device to scan, for the adjustedduration, the one or more channels for the presence of the wirelessdevices.

These as well as other aspects, advantages, and alternatives, willbecome apparent to those of ordinary skill in the art by reading thefollowing detailed description, with reference where appropriate to theaccompanying figures.

BRIEF DESCRIPTION OF THE FIGURES

FIG. 1A illustrates a device, according to an example embodiment.

FIG. 1B is a block diagram illustrating components of the device in FIG.1A.

FIG. 2 illustrates a system, according to an example embodiment.

FIG. 3 is a block diagram of a method, according to an exampleembodiment.

FIG. 4 depicts a computer readable medium configured according to anexample embodiment.

DETAILED DESCRIPTION

The following detailed description describes various features andfunctions of the disclosed systems and methods with reference to theaccompanying figures. In the figures, similar symbols identify similarcomponents, unless context dictates otherwise. The illustrative system,device and method embodiments described herein are not meant to belimiting. It may be readily understood by those skilled in the art thatcertain aspects of the disclosed systems, devices and methods can bearranged and combined in a wide variety of different configurations, allof which are contemplated herein.

In some example wireless communications systems disclosed herein, anavailable frequency band is utilized by network nodes (e.g., IEEE802.11-compliant access points such as those in a wireless local areanetwork (WLAN), Bluetooth beacons, wireless wide area network (WWAN)access points, cellular towers, nodes, base stations, etc.) towirelessly communicate with client devices (e.g., smartphones, mobiledevices, desktop computers, laptops, wearable devices, etc.). In somesystems, client devices may also communicate with one another. In bothcases, the available frequency band may be regulated in a particulargeographic zone according to a standard (e.g., IEEE 802.11, etc.) thatdefines one or more channels within the frequency band for the wirelesscommunication. By way of example, a G-band of the IEEE 802.11 standardin some geographical zones provides fourteen channels (e.g., within afrequency band proximal to a frequency of 2.4 GHz), eleven of which areactive channels that compliant wireless devices may utilize to establishcommunications with other compliant wireless devices/access points. Inthis example, channel 1 may have a center frequency of 2.412 GHz,channel 6 may have a center frequency of 2.437 GHz, etc. Further, inthis example, each channel may have a particular bandwidth (e.g., 20MHz, 22 MHz, etc.). As another example, an A-band in some geographicalzones provides nine active channels (e.g., within a frequency bandproximal to a frequency of 5 GHz). Other standards are possible as wellfor various frequency bands and according to various regulations of arespective geographic zone.

To facilitate discovery or association with other wireless devices in asystem, a device of the present disclosure may scan the one or morefrequency channels for wireless signals transmitted by any of thewireless devices. In a passive scanning mode, the device tunes atransceiver (e.g., circuitry and antenna) to a particular channel andkeeps the transceiver tuned to the particular channel for a particularperiod of time (e.g., dwell time) to listen for wireless signalstransmitted by the other wireless devices over the particular channel.In an active scanning mode, the transceiver transmits an active proberequest over the particular channel, and remains tuned to the particularchannel for the particular period of time to listen for a response. Insome instances, the device then repeats this process for the otherchannels.

The dwell time per channel may vary according to a configuration of thedevice. On one hand, a short dwell time decreases the likelihood ofdetecting an active probe beacon from another wireless device in thesystem, a probe response from the other wireless device, or any otherwireless transmission from the other wireless device. For instance, theshort dwell time may be insufficient to account for delays due tovarious network issues such as packet congestion, packet quality,environmental effects, etc. On the other hand, a long dwell timeincreases the likelihood of detection but affects other operations ofthe device, such as operations that utilize the transceiver. Further,the long dwell time may also increase the power consumption of thedevice while the transceiver is powered to listen for the wirelesssignals in each or any of the multiple channels.

By way of example, suppose that the scanning process described aboveinvolves the device scanning 20 channels for a dwell time of 80 ms perchannel. Other dwell times (e.g., 5 ms, 20 ms, 40 ms, etc.) and/ornumber of channels are possible and may vary according to the system ordevice. However, for the sake of the example, suppose that the dwelltime is 80 ms per channel. The total duration for scanning all thechannels in this example would then be 20*80 ms=1.6 seconds. In someinstances, the scanning process may be initiated periodically,intermittently, in response to receiving a scan request, in response toa sensor measurement (e.g., location sensor, etc.), or in any otherfashion according to an application or configuration of the device.

Continuing with the example above, suppose that the device performs thescanning process every minute. In one instance, the device may beutilizing the transceiver to communicate data (e.g., video stream) witha given wireless device using one of the 20 channels at the time whenthe scanning process should be initiated. In this instance, the devicewould interrupt, every minute and for 1.6 seconds, the communicationwith the given wireless device to perform the scanning process. In turn,the throughput or quality of the communication may be reduced. Inanother instance, the device (or the transceiver) may be in a low powermode (e.g., sleep mode, etc.) such as a mode when a display of thedevice is switched off, a user-selected power consumption mode, etc. Inthis instance, the device would awaken (e.g., provide power) thetransceiver for 1.6 seconds to perform the scanning process everyminute. In turn, power consumption of the device over a given period oftime (e.g., multiple scans) would increase due to the scanning process.Suppose that, in this instance, the device is battery-powered. To thatextent, the amount of increase in power consumption due to the scanningprocess may affect the battery life or the amount of time the device mayoperate using the battery.

Within examples, the present method allows mitigating the effect of theduration of the scanning process by varying a scan time for one or morechannels according to operations of the device at a given time of thescanning process. In one example, where the device is engaged in anoperation where detection of other wireless devices is likely useful,such as when a current connection to a network experiences reducedquality for instance, the device may increase the duration of scanningthe one or more channels (e.g., restore the duration to a defaultduration, etc.). In another example, where the operation is one wheredetection of other wireless devices is less likely to be useful, such aswhen a display is switched off or when the device is in an idle mode forinstance, the device may decrease the duration of scanning the one ormore channels. Other examples are possible as well and are contemplatedwithin exemplary embodiments herein.

Example systems herein may be implemented in or may take the form of acomputing device (e.g., desktop computer, laptop, cellular phone,personal digital assistant (PDA), network node, access point, wearabledevice, mobile device, etc.) that includes and/or is coupled to awireless receiver/transmitter. In an example implementation, anapplication, an application programming interface (API), an operatingsystem, or circuitry that is wired to perform logic functions mayprovide instructions executable by one or more processors of thecomputing device to perform the functions described herein. Otherimplementations are possible as well and are described within exemplaryembodiments herein.

Referring now to the figures, FIG. 1A illustrates a device 100,according to an example embodiment. The device 100 may include a display102, applications 104 a and 104 b, an application programming interface(API) 106, and an operating system 108 for executing instructions tooperate hardware 110 of the device 100. Although device 100 isillustrated in FIG. 1A as a smartphone, aspects of this disclosure areapplicable to other computing devices such as personal computers,laptops, tablet computers, servers, wearable devices, etc.

The display 102 may include a light emitting diode (LED) display, aliquid crystal display (LCD), a cathode ray tube (CRT) display, an e-inkscreen, and/or any other suitable device for presenting a graphical userinterface and/or visual information to the user of the device 100.Although illustrated in FIG. 1A that the display 102 is included in thedevice 100, in some examples, the display 102 may be implemented as anexternal display coupled to the device 100. For example, the display 102may be an external monitor or projection screen configured to displaythe visual information provided by the device 100.

Each of the applications 104 a and 104 b may include instructions thatwhen executed cause the device 100 to perform specific tasks orfunctions. The applications 104 a and 104 b may be native applications(i.e., installed by a manufacturer of the device 100 and/or amanufacturer of the operating system 108) or may be a third-partyapplication installed by a user of the device 100. A non-exhaustive listof example applications includes: a media player application thataccepts media files as inputs and generates corresponding video and/oraudio to output device(s) (e.g., the display 102, speakers, headphones,etc.); an e-reader application which accepts electronic documents (e.g.,books, magazines, etc.) as an input and presents the content of thedocuments via the display 102; a feed reader that accepts feedsdelivered over a network (e.g., RSS feeds and/or feeds from socialnetwork sites) as inputs and presents the feeds via the display 102; amap application that displays a map via the display 102; a note-takingapplication, a bookmarking application, a word processing application,spreadsheet application, and/or presentation application that acceptsspecifically formatted files as inputs and presents them via the display102 for viewing and/or editing. Other example applications are possible.

The device 100 may also include one or more APIs, such as the API 106.The API 106 may function as an interface between the operating system108 and the applications 104 a and 104 b. For example, the API 106 mayprovide the interface for receiving requests having a particular formatfrom the application 104 a and/or 104 b, and may manage provision of therequests to the operating system 108. Further, in some examples, the API106 may be configured to process requests that are directed toparticular functions of the device 100, such as operation of the display102 or the hardware 110. In other examples, the API 106 may beconfigured to process requests for any combination of functions of thedevice 100. Additionally or alternatively, the functions of the API 106may be performed by the operating system 108. For example, theapplications 104 a and/or 104 b may be configured to interface directlywith the operating system 108.

The operating system 108 may interact with and manage the display 102and the hardware 110 to provide services for the applications 104 a and104 b. For example, the application 104 a may request the operatingsystem 108 to utilize the hardware 110 to scan for wireless devices inan environment of the device 100.

The hardware 110 may include, for example, a central processing unit(CPU), a graphics processor (GPU), memory, a communication interface, apower unit, an input/output (I/O) interface, user input device(s), andoutput device(s). Components of hardware 110 may be controlled byinstructions contained in applications 104 a and 104 b, the API 106,and/or the operating system 108.

The central processing unit (CPU) may be operable to effectuate theoperation of the device 100 by executing instructions stored in memoryor disk storage. Such instructions may include the operating system 108and the applications 104 a and 104 b, for example. The CPU may, forexample, comprise a single or multi-core processor, an applicationspecific integrated circuit (ASIC), field programmable gate array(FPGA), and/or any other suitable circuitry.

The graphics processor may be operable to generate a video stream foroutput to the display 102 based on instructions and/or data receivedfrom the CPU. Additionally or alternatively, the graphics processor maybe operable to perform animations of virtual objects on a display regionof the display 102. Thus, data structures corresponding to images to bedisplayed on the display 102 may be stored to and read from the memoryor disk storage by the CPU. The CPU may convey such data structures tothe graphics processor via a standardized application programminginterface (API) such as, for example, the API 106, Standard WidgetToolkit (SWT), the DirectX Video Acceleration API, the Video DecodeAcceleration Framework API, or other suitable API.

The memory may include program memory and run-time memory. The memorymay, for example, comprise non-volatile memory, volatile memory, readonly memory (ROM), random access memory (RAM), flash memory, magneticstorage, and/or any other suitable memory. Program memory may storeinstructions executable by the CPU to effectuate operation of theoperating system 108 and the applications 104 a and 104 b. Runtimememory may store data generated or used during execution of theoperating system 108 or applications 104 a and 104 b.

The communication interface may be operable to allow wired (e.g.,Ethernet, Universal Serial Bus (USB), etc.) and/or wireless (e.g.,Wi-Fi, Bluetooth, near-field, Infrared (IR), etc.) connectivity betweenthe device 100 and one or more external devices. To that end, thecommunication interface may include a wireless receiver configured toreceive and/or manipulate wireless signals, and/or a wirelesstransmitter configured to transmit and/or manipulate wireless signals.In some examples, the wireless receiver and the wireless transmitter canbe implemented as a single circuit that performs both transmit andreceive functions. The communication interface may also include one ormore antennas (e.g., dipole, etc.) coupled to the various transmitter,receiver, and/or transceiver circuitry to broadcast and/or receive thewireless signals.

The input/output (I/O) interface may be operable to receive signals fromthe input device(s), and provide corresponding signals to the CPU and/orthe graphics processor. The input device(s) may include, for example, amouse, a touchpad, a motion sensor, a trackball, a voice recognitiondevice, a keyboard, or any other suitable input device which enables auser to interact with the device 100. The output devices may include,for example, the display 102, additional displays, headphones, and/orspeakers.

In some examples, the device 100 may include more or less componentsthan those shown in FIG. 1A. In one example, the device 100 may notinclude any or some of the applications 104 a, 104 b, and the API 106.In another example, the hardware 110 may not include a GPU. Otherexamples are possible as well.

FIG. 1B is a block diagram illustrating components of the device 100 inFIG. 1A. In some examples, some components illustrated in FIG. 1B may bedistributed across multiple computing devices. However, for the sake ofexample, the components are shown and described as part of one exampledevice 100.

In some implementations, the device 100 may include a device platform(not shown), which may be configured as a multi-layered platform. Thedevice platform may include different applications and an applicationframework, as well as various kernels, libraries, and runtime entities.In other examples, other formats or systems may operate the device 100as well.

As shown, the device 100 includes a wireless receiver 112, a wirelesstransmitter 114, an I/O interface 116, a display component 118, datastorage 122, and a processor 126. Components illustrated in FIG. 1B maybe linked together by a communication link 120. In some examples, thedevice 100 may include hardware to enable communication within thedevice 100 and between the device 100 and another computing device (notshown), such as a server entity. The hardware may include antennas, forexample.

The wireless receiver 112 and the wireless transmitter 114 may beconfigured to allow the device 100 to wirelessly communicate (e.g.,Wi-Fi, Bluetooth, IR, near-field, short-range wireless radio technology,communication protocols described in IEEE 802.11 (including any IEEE802.11 revisions), cellular technology, etc.) with another computingdevice (not shown), such as a server, an access point, another devicesimilar to the device 100, etc. In particular, the wireless receiver 112may be configured to wirelessly receive data from one or more computingdevices, and the wireless transmitter 114 may be configured to send datato the one or more computing devices. In some examples, the receiver 112and the transmitter 114 may also maintain and manage records of datareceived and sent by the device 100. In other examples, records of datamay be maintained and managed by other components of the device 100.

In some examples, the device 100 may also include wired transmittersand/or receivers (not shown) to allow wired communication as well usingany wired communication technology (e.g., USB, HDMI, Ethernet, serialline, etc.).

The I/O interface 116 may include a user-interface, such as a keyboard,microphone, touch screen, etc., to receive inputs, and circuitry tomanage and maintain the user-interface. Further, in some examples, theinterface 116 may also include interface with output devices such as thedisplay 102 of FIG. 1A.

The display component 118 may be a hardware interface that is configuredto facilitate output of visual information via the display 102 of FIG.1A. For example, the display component 118 may include circuitry thatoperates the display 102, or may communicate the visual information tothe display 102 by using the wireless transmitter 118 to couple thedisplay 102 with the device 100.

The processor 126 may be configured to operate the device 100. Forexample, the processor 126 may be configured to cause the wirelessreceiver 112 to perform a scan over one or more channels in one or morefrequency bands for presence of wireless devices in the environment ofthe device 100. The processor 126 may also be configured to operateother components of the device 100 such as input/output components ordisplay components. The device 100 is illustrated to include anadditional processor 128. The processor 128 may be configured to controlsome of the aspects described for the processor 126. For example, theprocessor 128 may be a GPU that operates the display 102, and theprocessor 128 may be configured to control other aspects such as thewireless receiver 112 and/or the wireless transmitter 114. Someembodiments may include only one processor (e.g., processor 126) or mayinclude additional processors configured to control various aspects ofthe device 100.

The data storage 122 may store program logic 124 that can be accessedand executed by the processor 126 and/or the processor 128. For example,the program logic 124 may include the instructions provided by theapplications 104 a and 104 b, the API 106, and/or the operating system108.

The communication link 120 is illustrated as a wired connection;however, wireless connections may also be used. For example, thecommunication link 120 may be a wired serial bus such as a universalserial bus or a parallel bus, or a wireless connection using, e.g.,short-range wireless radio technology, communication protocols describedin IEEE 802.11 (including any IEEE 802.11 revisions), or Cellulartechnology, among other possibilities.

FIG. 2 illustrates a system 200, according to an example embodiment. Asshown, the system 200 includes a client device 202 in an environmentthat includes wireless devices 204 a, 204 b, 206 a, 206 b. As shown,wireless devices 204 a and 204 b are wireless wide area network (WWAN)access points, and wireless devices 206 a and 206 b are wireless localarea network (WLAN) access points. However, in some embodiments, thesystem 200 may include other types of access points and/or only one typeof access point. For example, the system 200 may alternatively includeBluetooth access points, near-field access points, or any other wirelessdevice. Further, in some embodiments, the system 200 may include adifferent number of wireless devices and/or client devices than thoseshown. For example, the system 200 may alternatively include multipleclient devices and/or a single access point. The device 202 may besimilar to the device 100 of FIGS. 1A-1B.

The device 202 and/or the wireless devices 204 a, 204 b, 206 a, 206 bmay be configured to wirelessly communicate information with oneanother. In one scenario, the client device 202 may receive connectivityto a server (not shown) or a network via one or more of the accesspoints 204 a, 204 b, 206 a, 206 b. In another scenario, the clientdevice 202 may wirelessly communicate information with another clientdevice (not shown). Other scenarios are possible as well.

In some examples, the wireless devices 204 a, 204 b, 206 a, 206 b maytransmit wireless signals that are shown in FIG. 2 as, respectively,signals 214 a, 214 b, 216 a, 216 b. The wireless signals may include,for example, an active probe beacon, a probe response, or any otherwireless signal that may be received by the device 202 to indicatepresence of a corresponding wireless device of the wireless devices 204a, 204 b, 206 a, 206 b.

However, location and wireless communication availability of the device202 and/or the wireless devices 204 a, 204 b, 206 a, 206 b may vary overtime. In one example, the device 202 may be a mobile device that travelssuch that at a given time, one or more of the signals 214 a, 214 b, 216a, 216 b is within the environment (e.g., threshold distance forwireless communication, etc.) of the device 202. In another example, theaccess points 206 a, 206 b may also be moved (e.g., wireless routers ina building) or may be powered during certain times of the day amongother possibilities. Accordingly, in some examples, the present methodallows the device 202 and/or the wireless devices 204 a, 204 b, 206 a,206 b to scan a respective environment for presence of other clientdevices/wireless devices at a given time. In some examples, the scanningprocess may occur intermittently, periodically, in response to receivinga scan request, or in response to any other event according to aconfiguration of the respective device.

The scanning process may involve, for example, the device 202 tuning, ator after the given time for the scan, a wireless receiver thereof (notshown) to a particular channel of a frequency band (e.g., channel 1 ofthe G-band of the IEEE 802.11 standard, etc.). The device 202 may thenremain tuned to the particular channel, for a given period of time(e.g., dwell time), to listen for wireless transmissions from otherdevices (e.g., any of the wireless devices 204 a, 204 b, 206 a, 206 b,etc.). Further, the scanning process may then involve the device 202tuning the wireless receiver to another channel of the frequency band(or another frequency band), and remaining tuned to the other channelfor the given period of time (e.g., dwell time) or some other period oftime. Through this process, for example, a duration of the scanningprocess may include a sum of the dwell times for listening to all thechannels (and possibly additional time for re-tuning, powering, etc. ofthe wireless receiver).

FIG. 3 is a block diagram of a method 300, according to an exampleembodiment. Method 300 shown in FIG. 3 presents an embodiment of amethod that could be used with any of the devices 100, 202, 204 a, 204b, 206 a, 206 b, for example. Method 300 may include one or moreoperations, functions, or actions as illustrated by one or more ofblocks 302-306. Although the blocks are illustrated in a sequentialorder, these blocks may in some instances be performed in parallel,and/or in a different order than those described herein. Also, thevarious blocks may be combined into fewer blocks, divided intoadditional blocks, and/or removed based upon the desired implementation.

In addition, for the method 300 and other processes and methodsdisclosed herein, the flowchart shows functionality and operation of onepossible implementation of present embodiments. In this regard, eachblock may represent a module, a segment, a portion of a manufacturing oroperation process, or a portion of program code, which includes one ormore instructions executable by a processor for implementing specificlogical functions or steps in the process. The program code may bestored on any type of computer readable medium, for example, such as astorage device including a disk or hard drive. The computer readablemedium may include non-transitory computer readable medium, for example,such as computer-readable media that stores data for short periods oftime like register memory, processor cache and Random Access Memory(RAM). The computer readable medium may also include non-transitorymedia, such as secondary or persistent long term storage, like read onlymemory (ROM), optical or magnetic disks, compact-disc read only memory(CD-ROM), for example. The computer readable media may also be any othervolatile or non-volatile storage systems. The computer readable mediummay be considered a computer readable storage medium, for example, or atangible storage device.

In addition, for the method 300 and other processes and methodsdisclosed herein, each block in FIG. 3 may represent circuitry that iswired to perform the specific logical functions in the process.

At block 302, the method 300 includes identifying one or more operationsof a device that are occurring at a given time. The device may besimilar to the device 100. For example, the device may include one ormore processors similar to the processor 126 of the device 100.

Further, in some examples, the method 300 may include the devicereceiving instructions to scan, at a given time, one or more channels inone or more frequency bands for presence of a wireless device in anenvironment of the device (e.g., the device 202 of the system 200,etc.). By way of example, the device may include a wireless receiver(e.g., wireless receiver 112) that is configured to scan 11 channels ina G-band and 9 channels in an A-band of an IEEE 802.11 standardenvironment. In this example, the instructions may cause the device toscan, at the given time, the 20 channels for a particular dwell time(e.g., 80 ms) on each channel. The duration of such scan, for example,may include a sum of the dwell times (e.g., 20*80 ms=1.6 seconds).

In one example, the instructions may be provided by an application suchas the applications 104 a and 104 b of the device 100. For example, anemail application may request the scan (i.e., provide the instructions)to facilitate initiating a connection with an access point (e.g., thewireless device), and thereby download email from a server via theaccess point. In another example, the instructions may be providedperiodically or intermittently. For example, an operating system such asthe OS 108 may provide the instructions (e.g., periodically orintermittently) to scan for presence of access points, Bluetoothbeacons, or other wireless devices in the vicinity of the device inanticipation of a user request to connect to such access point. In yetanother example, the instructions may be provided in response to someother event, such as launching an application, beginning a video stream,detecting poor signal strength of a current connection, or any otherevent. Other examples are possible as well. Thus, in some examples, theidentification of the one or more operations at block 302 may be inresponse to receiving the instructions to scan.

At the given time or prior to the given time, in some examples, thedevice of the present method may identify various operations of thedevice. A non-exhaustive list of example operations includes: wirelessconnectivity status of the device, operation of a particular application(e.g., video display application, etc.), power mode of the device (e.g.,power-saving mode, normal mode, airplane mode, etc.), power consumptionlevel of the device or components thereof, inputs received by thedevice, or any other operation.

At block 304, the method 300 includes adjusting a duration of scanningone or more channels in one or more frequency bands for presence ofwireless devices in an environment of the device based on the identifiedoperations of the device.

In line with the discussion above, the duration of scanning the one ormore channels may interfere with some operations of the device. Forexample, while the device is scanning the one or more channels, thedevice may consume additional power to operate wireless receiver (e.g.,transceiver) circuitry during the scan. In some examples, the presentmethod allows mitigating the effect of such interference by adjustingthe duration of the scan according to the one or more operations of thedevice at the given time that are identified at block 302.

In a first example, the device may detect that an amount of power to adisplay of the device is less than a threshold. For instance, thedisplay may be switched off or may be operating in a low-power mode(e.g., due to inactivity or other configuration setting, etc.). In thisinstance, detecting the presence of the wireless device in theenvironment may be less critical than an instance where the display isswitched on (e.g., device is being actively used at the given time,etc.). In this example, the device may adjust the duration of the scanby reducing the dwell time for scanning some or all of the one or morechannels based at least in part on the amount of the power to thedisplay being less than the threshold, thereby conserving the amount ofpower provided to the wireless receiver. Accordingly, in some examples,the method 300 may include detecting that an amount of power to adisplay of the device is less than a threshold, and responsivelyreducing the duration of scanning the one or more channels.

In a second example, the device may determine that, at the given time,an external computing device is in wireless connectivity with the deviceusing one of the one or more channels. For instance, the device may beconnected to an access point using one of the channels at the giventime. In this instance, detection of the presence of other wirelessdevices in the environment may be less critical, since the devicealready has an active connection. In turn, for example, the device mayadjust the duration to reduce the scanning time. Accordingly, in someexamples, the method 300 may include determining that the device is inwireless connectivity with an external computing device using one of theone or more channels, and responsively reducing the duration of scanningthe one or more channels.

In a third example, the device may detect a change in power consumptionof the device greater than a threshold change. For instance, the devicemay initiate a map application that consumes a significant amount ofpower (e.g., to use a Global Positioning System (GPS) sensor, etc.). Inthis instance, the amount of power consumed is substantially more thanthe power that would be saved by reducing the duration of the scan time,and thus the dwell time per channel may be restored/increased to alonger time (e.g., 80 ms). As a variation of the example above, if themap application is closed, the device may detect a significant reductionin the power consumption (e.g., greater than the threshold change), andthus may reduce the dwell time per channel (e.g., 20 ms). Accordingly,in some examples, the method 300 may include detecting a change in powerconsumption of the device greater than a threshold change. In theseexamples, adjusting the duration is based also on detecting the change.

In a fourth example, the device may receive an input from an inputinterface (e.g., I/O interface 116), and adjust the scanning durationaccordingly. In one instance, the device may detect input from a buttonor touchscreen, which may indicate that a user of the device iscurrently (or recently) using the device, and may thereby need to detectpresence of other wireless devices in the environment. In this instance,the device may increase or restore the dwell time per channel (e.g., 80ms) to increase the likelihood of detecting other wireless devices. Inanother instance, the device may detect an input requesting that thedevice operate in a low-power mode. In this instance, the device mayreduce the dwell time per channel (and therefore the duration ofscanning the one or more channels) to reduce overall power consumption.Accordingly, in some examples, the method 300 may include receiving aninput from an input interface of the device. In these examples,adjusting the duration may be responsive to receiving the input.

In a fifth example, the device may detect activity of a particularapplication in the device, and adjust the duration accordingly. Forinstance, the device may detect activity of a video playbackapplication, an audio application, a phone application, or any otherapplication where a user of the device is unlikely to request or needdetection of wireless devices in the environment at the given time. Inthis instance, the device may reduce the dwell time per channel. Inanother instance, the device may detect activity of a web browserapplication that may indicate that the user may need to wirelesslyconnect to other access points (e.g., in case a current connectionexperiences poor quality). In this instance, the device may increase orrestore the dwell time to a longer time. Accordingly, in some examples,the method 300 may include detecting activity of a particularapplication in the device. In these examples, adjusting the duration maybe based on detecting the activity.

In a sixth example, the device may receive a request for wirelessconnectivity to an external computing device. For instance, a user ofthe device may request the device to send an email to a server. In thisinstance, the device may increase or restore the dwell time per channelto increase the likelihood of detecting presence of an access point tofacilitate sending the email. Accordingly, in some examples, the method300 may include receiving a request for wireless connectivity to anexternal computing device from an application in the device, andresponsively increasing the duration of scanning the one or morechannels.

In a seventh example, the device may adjust the scanning duration basedon previously detected wireless devices in the environment. Forinstance, the device may maintain a list of detected wireless devices,or may detect the presence of a given wireless device while scanning oneof the one or more channels. In this instance, the device may reduce thedwell time per channel (at least for the remaining channels to bescanned), since at least one wireless device in the environment wasalready detected. Accordingly, in some examples, the method 300 mayinclude detecting presence of a given wireless device in the environmentof the device based on a scan of a given channel of the one or morechannels by the wireless receiver, and responsively reducing theadjusted duration of scanning the one or more channels.

In an eighth example, the device may adjust the duration based on anevent-based configuration or other configuration of the device. Forinstance, the device may detect a preferred network offload (PNO) event.PNO may allow the device to establish and/or maintain a Wi-Fi connectioneven when the device is in a low-power mode (e.g., when the screen isturned off). By way of example, the PNO configuration may allow thedevice to communicate using Wi-Fi (e.g., the wireless receiver) insteadof a cellular communication interface that consumes more power, evenwhen the device is in the low-power mode. In this instance, the devicemay increase and/or restore the dwell time per channel (e.g., 80 ms)based on receipt of the PNO event to increase the likelihood ofdetecting wireless devices (e.g., Wi-Fi access points) in theenvironment even when the device is in a low-power mode (e.g., amount ofpower to the display is less than the threshold).

Other examples are possible as well. Thus, the method 300 allows varyingthe duration of scanning the one or more channels (or the dwell time forscanning some or all of the one or more channels) according to theoperations of the device at the given time of the scan.

At block 306, the method 300 includes causing a wireless receiver of thedevice to scan, for the adjusted duration, the one or more channels forpresence of the wireless devices. For example, if the dwell time perchannel is reduced to 40 ms at block 304 and the one or more channelsare 20 channels. The adjusted duration may correspond to 40 ms*19channels=800 ms. In turn, the device may tune the wireless receiver tothe first channel for 40 ms, the second channel for 40 ms, etc. Otherdwell times are possible as well (e.g., 5 ms, 10 ms, 20 ms, 40 ms, 80ms, etc.) according to the configuration of the device. Further, thedwell time for each channel may be different depending on the identifiedoperations of the device, for example.

In some examples, the method 300 may include reducing an amount of powerto the wireless receiver after lapse of the adjusted duration. Forexample, the device may configure the wireless receiver to an “awake”mode to perform the scan for the adjusted duration, thereby increasingthe power provided to the wireless receiver (e.g., Wi-Fi board, etc.).In this example, the device may then configure the wireless receiver toa “sleep” mode after the scan is performed (i.e., lapse of the adjustedduration), thereby reducing the power provided to the wireless receiver.

In some examples, the method 300 may include transmitting a proberequest via a wireless transmitter (e.g., transmitter 114) using the oneor more channels. In these examples, the wireless receiver may scan theone or more channels for a response to the probe request over theadjusted duration responsive to transmitting the probe request. Thus,for example, the device of the method 300 may be configured in an activescanning mode to transmit the probe request over a given channel, listenfor the response over the given channel for an adjusted dwell time(e.g., 40 ms), then proceed to the next channel and transmit anotherprobe request, etc.

FIG. 4 depicts an example computer readable medium configured accordingto an example embodiment. In example embodiments, an example system mayinclude one or more processors, one or more forms of memory, one or moreinput devices/interfaces, one or more output devices/interfaces, andmachine readable instructions that when executed by the one or moreprocessors cause the system to carry out the various functions tasks,capabilities, etc., described above.

As noted above, in some embodiments, the disclosed techniques (e.g.method 300) may be implemented by computer program instructions encodedon a computer readable storage media in a machine-readable format, or onother media or articles of manufacture (e.g., program logic 124 of thedevice 100). FIG. 4 is a schematic illustrating a conceptual partialview of an example computer program product that includes a computerprogram for executing a computer process on a computing device, arrangedaccording to at least some embodiments disclosed herein.

In one embodiment, the example computer program product 400 is providedusing a signal bearing medium 402. The signal bearing medium 402 mayinclude one or more programming instructions 404 that, when executed byone or more processors may provide functionality or portions of thefunctionality described above with respect to FIGS. 1-3. In someexamples, the signal bearing medium 402 may be a computer-readablemedium 406, such as, but not limited to, a hard disk drive, a CompactDisc (CD), a Digital Video Disk (DVD), a digital tape, memory, etc. Insome implementations, the signal bearing medium 402 may be a computerrecordable medium 408, such as, but not limited to, memory, read/write(R/W) CDs, R/W DVDs, etc. In some implementations, the signal bearingmedium 402 may be a communication medium 410 (e.g., a fiber optic cable,a waveguide, a wired communications link, etc.). Thus, for example, thesignal bearing medium 402 may be conveyed by a wireless form of thecommunications medium 410.

The one or more programming instructions 404 may be, for example,computer executable and/or logic implemented instructions. In someexamples, a computing device may be configured to provide variousoperations, functions, or actions in response to the programminginstructions 404 conveyed to the computing device by one or more of thecomputer readable medium 406, the computer recordable medium 408, and/orthe communications medium 410.

The computer readable medium 406 may also be distributed among multipledata storage elements, which could be remotely located from each other.The computing device that executes some or all of the storedinstructions could be an external computer, or a mobile computingplatform, such as a smartphone, tablet device, personal computer,wearable device, etc. Alternatively, the computing device that executessome or all of the stored instructions could be remotely locatedcomputer system, such as a server.

It should be understood that arrangements described herein are forpurposes of example only. As such, those skilled in the art willappreciate that other arrangements and other elements (e.g. machines,interfaces, functions, orders, and groupings of functions, etc.) can beused instead, and some elements may be omitted altogether according tothe desired results. Further, many of the elements that are describedare functional entities that may be implemented as discrete ordistributed components or in conjunction with other components, in anysuitable combination and location, or other structural elementsdescribed as independent structures may be combined.

While various aspects and embodiments have been disclosed herein, otheraspects and embodiments will be apparent to those skilled in the art.The various aspects and embodiments disclosed herein are for purposes ofillustration and are not intended to be limiting, with the true scopebeing indicated by the following claims, along with the full scope ofequivalents to which such claims are entitled. It is also to beunderstood that the terminology used herein is for the purpose ofdescribing particular embodiments only, and is not intended to belimiting.

What is claimed is:
 1. A method comprising: scanning, by a device thatincludes one or more processors, one or more channels in one or morefrequency bands for presence of wireless devices in an environment ofthe device; determining a power mode of the device, wherein the powermode is one of a plurality of power modes associated with a plurality ofpower consumption levels supported by the device; and determining thatthe power mode of the device is a sleep mode associated with a low powerconsumption level; reducing a scanning duration of the scanning of theone or more channels based on determining that the power mode of thedevice is the sleep mode; receiving, from an application running on thedevice, during the scanning of the one or more channels, a request forwirelessly transmitting content to an external computing device; andincreasing a remaining duration of the scanning of the one or morechannels in response to the receiving the request from the application.2. The method of claim 1, further comprising: determining a rate ofpower consumption of the device; and adjusting the scanning durationbased on at least the determined rate of power consumption.
 3. Themethod of claim 1, further comprising: determining a rate of powerconsumption of the device; and adjusting the scanning duration by: basedon at least the determined rate of power consumption being greater thana threshold, selecting a first dwell time for scanning a given channelof the one or more channels; and based on at least the determined rateof power consumption being less than the threshold, selecting a seconddwell time for scanning the given channel, wherein the second dwell timeis less than the first dwell time.
 4. The method of claim 1, furthercomprising: determining a rate of power consumption of a display of thedevice; and adjusting the scanning duration based on at least thedetermined rate of power consumption.
 5. The method of claim 1, whereinscanning the one or more channels comprises causing a wirelesstransceiver of the device to scan the one or more channels, the methodfurther comprising: determining a rate of power consumption of thewireless transceiver; and adjusting the scanning duration based on atleast the determined rate of power consumption.
 6. The method of claim1, further comprising: determining that a particular component of thedevice receives less than a threshold amount of power; and reducing thescanning duration in response to the determination that the particularcomponent of the device receives less than the threshold amount ofpower.
 7. The method of claim 1, further comprising: detecting presenceof a given wireless device in the environment of the device during thescanning of the one or more channels; and reducing a remaining durationof the scanning of the one or more channels in response to the detectionof the presence of the given wireless device.
 8. The method of claim 1,further comprising: detecting, during the scanning of the one or morechannels, a change in a rate of power consumption of the device that isgreater than a threshold change; and increasing a remaining duration ofthe scanning of the one or more channels in response to the detection ofthe change in the rate of power consumption.
 9. The method of claim 1,further comprising: determining that a video playback application or anaudio playback application is running on the device; and reducing thescanning duration in response to the determination that the videoplayback application or the audio playback application is running on thedevice.
 10. The method of claim 1, further comprising: determining thata telephone application is running on the device; and reducing thescanning duration in response to the determination that the telephoneapplication is running on the device.
 11. The method of claim 1, furthercomprising: determining that a web browser application is running on thedevice; and increasing the scanning duration in response to thedetermination that the web browser application is running on the device.12. A method comprising: scanning, by a device that includes one or moreprocessors, one or more channels in one or more frequency bands forpresence of wireless devices in an environment of the device;determining that the one or more channels are associated with apreferred network offload (PNO) configuration of the device based ondetection of a PNO event; and increasing a scanning duration of thescanning of the one or more channels in response to the determinationthat the one or more channels are associated with the PNO configurationof the device based on the detection of the PNO event.
 13. A devicecomprising: one or more processors; and data storage storinginstructions that, upon execution by the one or more processors, causethe device to: scan one or more channels in one or more frequency bandsfor presence of wireless devices in an environment of the device;determine a rate of power consumption of the device; and adjust ascanning duration of the scanning of the one or more channels by: basedon at least the determined rate of power consumption being greater thana threshold, selecting a first dwell time for scanning a given channelof the one or more channels; and based on at least the determined rateof power consumption being less than the threshold, selecting a seconddwell time for scanning the given channel, wherein the second dwell timeis less than the first dwell time.
 14. A non-transitory computerreadable medium having stored therein instructions that, when executedby a computing device, cause the computing device to perform functionscomprising: scanning one or more channels in one or more frequency bandsfor presence of wireless devices in an environment of the computingdevice; detecting, during the scanning of the one or more channels, achange in a rate of power consumption of the computing device that isgreater than a threshold change; and increasing a remaining duration ofthe scanning of the one or more channels in response to the detection ofthe change in the rate of power consumption.